//////////////////////////////////////////////////////////////////////////
//
// GAM203
// Shader Manager
// ShaderMgr.h
// 
// Scott Taylor
// Qantm College
//
//////////////////////////////////////////////////////////////////////////

#ifndef SHADERMGR_H
#define SHADERMGR_H

#include <list>
#include "Singleton.h"

struct IDirect3DDevice9;
class Shader;

class ShaderMgr : public Singleton<ShaderMgr>
{
public:

	void Shutdown();  // Cleans up after class, unloads all shaders

	bool Load(IDirect3DDevice9* a_pDevice, const char* a_pName, const char* a_pEffectFilename);  // Loads a shader from file

	Shader* Find(const char* a_pName);  // Finds a shader by name

	ShaderMgr();
	virtual ~ShaderMgr();

private:

	typedef std::list<Shader*> ShaderList;
	ShaderList m_shaders;  // All loaded shaders
};

#endif  // SHADERMGR_H

